package com.syedu.day08.v2;

/**
 * @Description 工厂类, 负责生产指定父类类型下的所有子类对象
 * 问题: 有父类,有若干子类,子类需要创建对象,则可以考虑使用工厂模式
 *
 * Java23种设计模式之一,设计模式就是程序员在大量的开发中总结出来的一套"公式",利用这套公式可以解决
 * 某一类具体的问题.
 *
 * 注意: Java中的23个设计模式是大的分类,每个设计模式还有它的分支,比如:工厂模式就分为简单工厂,抽象工厂...
 *
 * @createTime 2022/3/18 10:51
 * @author Administrator
 */
public class VehicleFactory {
    /**
     *  常量定义,public static final
     *
     *  注意:
     *  常量一般都是公开的
     *  final表示这个常量无法被改变
     *  常量的命名全部采用大写字母,多个单词的话中间用_隔开
     *
     *  作用: 安全(不能改) + 提高代码的可读性
     */
    public static final int BIKE = 1;
    public static final int CAR = 2;
    public static final int PLANE = 3;
    public static final int MOTOBIKE = 4;
    public static final int BOAT = 5;

    /**多态应用: 方法的返回类型写成父类*/
    public static Vehicle getVehicle(int type) {
        Vehicle vehicle = null;
        if (type == BIKE) {
            vehicle = new Bike();
        } else if (type == CAR) {
            vehicle = new Car();
        } else if (type == PLANE) {
            vehicle = new Plane();
        } else if (type == MOTOBIKE) {
            vehicle = new MotoBike();
        } else if (type == BOAT) {
            vehicle = new Boat();
        } else {
            System.out.println("参数有误!");
        }
        return vehicle;
    }
}
